1836C - k-th equality - CodeForces Solution


implementation math

Please click on ads to support us..

C++ Code:

#define _CRT_SECURE_NO_DEPRECATE
#include <bits/stdc++.h>
#include <unordered_map>
#define ll long long
#define all(v) v.begin(),v.end()
#define sz(x) (ll)(x.size())
#define endl '\n'
#define Mask bitset<40>
using namespace std;
void fast() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif
}


int countDigit(ll n) {
    int c = 0;
    while (n) {
        c++;
        n /= 10;
    }
    return c;
}

ll power(int a, int b) {
    ll ans = 1;
    for (int i = 0; i < b; i++) {
        ans *= a;
    }
    return ans;
}

int main() {
    fast();
    
    
    int tt; cin >> tt;
    while (tt--) {
        
        ll a, b, c, k; cin >> a >> b >> c >> k;
        if (max(a, b) > c || c>max(a,b)+1) {
            cout << -1 << endl;
            continue;
        }
        ll fa = power(10, a - 1), fb = power(10, b - 1), fc = power(10, c - 1);
        ll lc = power(10, c) - 1, la = power(10, a) - 1, lB = power(10, b) - 1;
        string x, y, z;
        for (int i = fa; i <= la; i++) {
            ll curb = fc - i;
            if (curb < fb)curb = fb;
            else if (curb > lB)curb = lB;
            if (countDigit(i + curb) != c)continue;
            ll lb = lc - i;
            lb = min(lb, power(10, b) - 1);
            if (lb < curb)lb = curb;
            ll steps = lb - curb + 1;
            if (k > steps) {
                k -= steps;
            }
            else {
                curb += (k - 1);
                k = 0;
                x = to_string(i);
                y = to_string(curb);
                z = to_string(i + curb);
                break;
            }
        }
        if (k) {
            cout << -1 << endl;
        }
        else {
            cout << x << " + " << y << " = " << z << endl;
        }

    }
    return 0;
}


/*



*/


Comments

Submit
0 Comments
More Questions

1176A - Divide it
1527A - And Then There Were K
1618E - Singers' Tour
1560B - Who's Opposite
182B - Vasya's Calendar
934A - A Compatible Pair
1618F - Reverse
1684C - Column Swapping
57C - Array
1713D - Tournament Countdown
33A - What is for dinner
810A - Straight A
1433C - Dominant Piranha
633A - Ebony and Ivory
1196A - Three Piles of Candies
299A - Ksusha and Array
448B - Suffix Structures
1092B - Teams Forming
1166C - A Tale of Two Lands
544B - Sea and Islands
152B - Steps
1174D - Ehab and the Expected XOR Problem
1511A - Review Site
1316A - Grade Allocation
838A - Binary Blocks
1515D - Phoenix and Socks
1624D - Palindromes Coloring
1552F - Telepanting
1692G - 2Sort
1191A - Tokitsukaze and Enhancement